//package com.lanchewuyou.user.driver.ui;
//
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Message;
//import android.support.v7.app.AppCompatActivity;
//import android.util.Log;
//import android.view.View;
//import android.widget.Button;
//import android.widget.EditText;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.baidu.location.BDLocation;
//import com.baidu.location.LocationClient;
//import com.baidu.location.LocationClientOption;
//import com.baidu.mapapi.SDKInitializer;
//import com.baidu.mapapi.map.BaiduMap;
//import com.baidu.mapapi.map.InfoWindow;
//import com.baidu.mapapi.map.MapPoi;
//import com.baidu.mapapi.map.MapStatusUpdate;
//import com.baidu.mapapi.map.MapStatusUpdateFactory;
//import com.baidu.mapapi.map.MapView;
//import com.baidu.mapapi.map.MyLocationConfiguration;
//import com.baidu.mapapi.map.MyLocationData;
//import com.baidu.mapapi.map.UiSettings;
//import com.baidu.mapapi.model.LatLng;
//import com.baidu.mapapi.overlayutil.DrivingRouteOverlay;
//import com.baidu.mapapi.overlayutil.OverlayManager;
//import com.baidu.mapapi.overlayutil.TransitRouteOverlay;
//import com.baidu.mapapi.overlayutil.WalkingRouteOverlay;
//import com.baidu.mapapi.search.core.RouteLine;
//import com.baidu.mapapi.search.core.SearchResult;
//import com.baidu.mapapi.search.route.DrivingRouteLine;
//import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
//import com.baidu.mapapi.search.route.DrivingRouteResult;
//import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
//import com.baidu.mapapi.search.route.PlanNode;
//import com.baidu.mapapi.search.route.RoutePlanSearch;
//import com.baidu.mapapi.search.route.TransitRouteLine;
//import com.baidu.mapapi.search.route.TransitRoutePlanOption;
//import com.baidu.mapapi.search.route.TransitRouteResult;
//import com.baidu.mapapi.search.route.WalkingRouteLine;
//import com.baidu.mapapi.search.route.WalkingRoutePlanOption;
//import com.baidu.mapapi.search.route.WalkingRouteResult;
//import com.lanchewuyou.user.driver.R;
//import com.lanchewuyou.user.driver.modul.LocationApplication;
//
///**
// * 路径规划界面
// */
//public class PathActivity extends AppCompatActivity implements BaiduMap.OnMapClickListener, OnGetRoutePlanResultListener {
//    //浏览路线节点相关
//    Button pathBtnPre = null;//上一个节点
//    Button pathBtnNext = null;//下一个节点
//    int nodeIndex = -1;//节点索引,供浏览节点时使用
//    RouteLine pathroute = null;
//    OverlayManager pathrouteOverlay = null;
//    private TextView pathpopupText = null;//泡泡view
//    private LocationClient mLocationClient;
//    //地图相关，使用继承MapView的MyRouteMapView目的是重写touch事件实现泡泡处理
//    //如果不处理touch事件，则无需继承，直接使用MapView即可
//    MapView pathMapView = null;    // 地图View
//    BaiduMap pathBaidumap = null;
//    private Button toMyLocation;
//    //搜索相关
//    RoutePlanSearch pathSearch = null;    // 搜索模块，也可去掉地图模块独立使用
//    private EditText searchEdit;
//    private BDLocation location;
//    private UiSettings uisettings;
//    private int errorCode;
//
//
//    private Handler handler = new Handler() {
//        @Override
//        public void handleMessage(Message msg) {
//            if (msg.what == 1) {
//
//                location = ((LocationApplication) getApplication()).personLocation;
//                MyLocationData locData = new MyLocationData.Builder()
//                        .accuracy(location.getRadius())
//                                // 此处设置开发者获取到的方向信息，顺时针0-360
//                        .direction(100).latitude(location.getLatitude())
//                        .longitude(location.getLongitude()).build();
//                pathBaidumap.setMyLocationData(locData);
//                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
//                MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(latLng, 17f);
//                pathBaidumap.animateMapStatus(u);
//            }
//        }
//    };
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        SDKInitializer.initialize(getApplicationContext());
//        setContentView(R.layout.activity_path);
//        mLocationClient = ((LocationApplication) getApplication()).mLocationClient;
//        initLocation();
//        mLocationClient.start();//开启定位
//        initViews();
//
//    }
//
//    private void initViews() {
//        pathMapView = (MapView) findViewById(R.id.path_map);
//        pathBaidumap = pathMapView.getMap();
//        pathBaidumap
//                .setMyLocationConfigeration(new MyLocationConfiguration(
//                        MyLocationConfiguration.LocationMode.FOLLOWING, true, null));
//
//        pathBtnPre = (Button) findViewById(R.id.pre);
//        pathBtnNext = (Button) findViewById(R.id.next);
//        pathBtnPre.setVisibility(View.INVISIBLE);
//        pathBtnNext.setVisibility(View.INVISIBLE);
//        //地图点击事件处理
//        pathBaidumap.setOnMapClickListener(PathActivity.this);
//        // 初始化搜索模块，注册事件监听
//        pathSearch = RoutePlanSearch.newInstance();
//        pathSearch.setOnGetRoutePlanResultListener(PathActivity.this);
//        searchEdit = (EditText) findViewById(R.id.path_end_point);
//        toMyLocation = (Button) findViewById(R.id.path_to_my_location);
//        toMyLocation.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                location = ((LocationApplication) getApplication()).personLocation;
//                MyLocationData locData = new MyLocationData.Builder()
//                        .accuracy(location.getRadius())
//                                // 此处设置开发者获取到的方向信息，顺时针0-360
//                        .direction(100).latitude(location.getLatitude())
//                        .longitude(location.getLongitude()).build();
//                pathBaidumap.setMyLocationData(locData);
//                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
//                MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(latLng, 17f);
//                pathBaidumap.animateMapStatus(u);
//                Toast.makeText(PathActivity.this, location.getAddrStr(), Toast.LENGTH_SHORT).show();
//
//            }
//        });
//        // 开启定位图层
//        pathBaidumap.setMyLocationEnabled(true);
//        uisettings = pathBaidumap.getUiSettings();
//        uisettings.setCompassEnabled(true);
//        Message message = new Message();
//        message.what = 1;
//        handler.sendMessageDelayed(message, 1000);
//    }
//
//    /**
//     * 发起路线规划搜索示例
//     *
//     * @param v
//     */
//    public void SearchButtonProcess(View v) {
//        //重置浏览节点的路线数据
//        pathroute = null;
//        pathBtnPre.setVisibility(View.INVISIBLE);
//        pathBtnNext.setVisibility(View.INVISIBLE);
//        pathBaidumap.clear();
//        location = ((LocationApplication) getApplication()).personLocation;
//        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
//        PlanNode stNode = PlanNode.withLocation(latLng);
//        PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", searchEdit.getText().toString());
//        // 实际使用中请对起点终点城市进行正确的设定
//        if (v.getId() == R.id.path_car) {
//            pathSearch.drivingSearch((new DrivingRoutePlanOption())
//                    .from(stNode)
//                    .to(enNode));
//        } else if (v.getId() == R.id.path_bus) {
//            pathSearch.transitSearch((new TransitRoutePlanOption())
//                    .from(stNode)
//                    .city("北京")
//                    .to(enNode));
//        } else if (v.getId() == R.id.path_walk) {
//            pathSearch.walkingSearch((new WalkingRoutePlanOption())
//                    .from(stNode)
//                    .to(enNode));
//        }
//    }
//
//    /**
//     * 节点浏览示例
//     *
//     * @param v
//     */
//    public void nodeClick(View v) {
//        if (pathroute == null ||
//                pathroute.getAllStep() == null) {
//            return;
//        }
//        if (nodeIndex == -1 && v.getId() == R.id.pre) {
//            return;
//        }
//        //设置节点索引
//        if (v.getId() == R.id.next) {
//            if (nodeIndex < pathroute.getAllStep().size() - 1) {
//                nodeIndex++;
//            } else {
//                return;
//            }
//        } else if (v.getId() == R.id.pre) {
//            if (nodeIndex > 0) {
//                nodeIndex--;
//            } else {
//                return;
//            }
//        }
//        //获取节结果信息
//        LatLng nodeLocation = null;
//        String nodeTitle = null;
//        Object step = pathroute.getAllStep().get(nodeIndex);
//        if (step instanceof DrivingRouteLine.DrivingStep) {
//            nodeLocation = ((DrivingRouteLine.DrivingStep) step).getEntrance().getLocation();
//            nodeTitle = ((DrivingRouteLine.DrivingStep) step).getInstructions();
//        } else if (step instanceof WalkingRouteLine.WalkingStep) {
//            nodeLocation = ((WalkingRouteLine.WalkingStep) step).getEntrance().getLocation();
//            nodeTitle = ((WalkingRouteLine.WalkingStep) step).getInstructions();
//        } else if (step instanceof TransitRouteLine.TransitStep) {
//            nodeLocation = ((TransitRouteLine.TransitStep) step).getEntrance().getLocation();
//            nodeTitle = ((TransitRouteLine.TransitStep) step).getInstructions();
//        }
//
//        if (nodeLocation == null || nodeTitle == null) {
//            return;
//        }
//        //移动节点至中心
//        pathBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(nodeLocation));
//        // show popup
//        pathpopupText = new TextView(PathActivity.this);
//        pathpopupText.setBackgroundResource(R.mipmap.popup);
//        pathpopupText.setTextColor(0xFF000000);
//        pathpopupText.setText(nodeTitle);
//        pathpopupText.setTextSize(15);
//        pathBaidumap.showInfoWindow(new InfoWindow(pathpopupText, nodeLocation, 0));
//    }
//
//    @Override
//    protected void onRestoreInstanceState(Bundle savedInstanceState) {
//        super.onRestoreInstanceState(savedInstanceState);
//    }
//
//    @Override
//    public void onMapClick(LatLng latLng) {
//        pathBaidumap.hideInfoWindow();
//    }
//
//    /**
//     * 获取步行路线回调
//     *
//     * @param result
//     */
//    @Override
//    public void onGetWalkingRouteResult(WalkingRouteResult result) {
//        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
//            Log.v("result", result.toString());
//            Log.v("resulterror", result.error.toString());
//            Toast.makeText(PathActivity.this, "抱歉，未找到结果", Toast.LENGTH_SHORT).show();
//        }
//        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
//            //起终点或途经点地址有岐义，通过以下接口获取建议查询信息
//            //result.getSuggestAddrInfo()
//            return;
//        }
//        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
//            nodeIndex = -1;
//            pathBtnPre.setVisibility(View.VISIBLE);
//            pathBtnNext.setVisibility(View.VISIBLE);
//            pathroute = result.getRouteLines().get(0);
//            WalkingRouteOverlay overlay = new WalkingRouteOverlay(pathBaidumap);
//            pathBaidumap.setOnMarkerClickListener(overlay);
//            pathrouteOverlay = overlay;
//            overlay.setData(result.getRouteLines().get(0));
//            overlay.addToMap();
//            overlay.zoomToSpan();
//        }
//
//    }
//
//    /**
//     * 获取公交路线回调
//     *
//     * @param result
//     */
//    @Override
//    public void onGetTransitRouteResult(TransitRouteResult result) {
//
//        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
//            Toast.makeText(PathActivity.this, "抱歉，未找到结果", Toast.LENGTH_SHORT).show();
//        }
//        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
//            //起终点或途经点地址有岐义，通过以下接口获取建议查询信息
//            //result.getSuggestAddrInfo()
//            return;
//        }
//        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
//            nodeIndex = -1;
//            pathBtnPre.setVisibility(View.VISIBLE);
//            pathBtnNext.setVisibility(View.VISIBLE);
//            pathroute = result.getRouteLines().get(0);
//            TransitRouteOverlay overlay = new TransitRouteOverlay(pathBaidumap);
//            pathBaidumap.setOnMarkerClickListener(overlay);
//            pathrouteOverlay = overlay;
//            overlay.setData(result.getRouteLines().get(0));
//            overlay.addToMap();
//            overlay.zoomToSpan();
//        }
//    }
//
//    /**
//     * 搜索驾车结果回调接口
//     *
//     * @param result
//     */
//    @Override
//    public void onGetDrivingRouteResult(DrivingRouteResult result) {
//        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
//            Toast.makeText(PathActivity.this, "抱歉，未找到结果", Toast.LENGTH_SHORT).show();
//        }
//        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
//            //起终点或途经点地址有岐义，通过以下接口获取建议查询信息
//            //result.getSuggestAddrInfo()
//            return;
//        }
//        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
//            nodeIndex = -1;
//            pathBtnPre.setVisibility(View.VISIBLE);
//            pathBtnNext.setVisibility(View.VISIBLE);
//            pathroute = result.getRouteLines().get(0);
//            DrivingRouteOverlay overlay = new DrivingRouteOverlay(pathBaidumap);
//            pathrouteOverlay = overlay;
//            pathBaidumap.setOnMarkerClickListener(overlay);
//            overlay.setData(result.getRouteLines().get(0));
//            overlay.addToMap();
//            overlay.zoomToSpan();
//        }
//    }
//
//    @Override
//    public boolean onMapPoiClick(MapPoi poi) {
//        return false;
//    }
//
//    @Override
//    protected void onPause() {
//        pathMapView.onPause();
//        super.onPause();
//    }
//
//    @Override
//    protected void onResume() {
//        pathMapView.onResume();
//        super.onResume();
//    }
//
//    @Override
//    protected void onDestroy() {
//        pathSearch.destroy();
//        pathMapView.onDestroy();
//        super.onDestroy();
//    }
//
//    private void initLocation() {
//        LocationClientOption option = new LocationClientOption();
//        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选，默认高精度，设置定位模式，高精度，低功耗，仅设备
//        option.setCoorType("gcj02");//可选，默认gcj02，设置返回的定位结果坐标系，
//        option.setScanSpan(5000);//可选，默认0，即仅定位一次，设置发起定位请求的间隔需要大于等于1000ms才是有效的
//        option.setIsNeedAddress(true);//可选，设置是否需要地址信息，默认不需要
//        option.setOpenGps(true);//可选，默认false,设置是否使用gps
//        option.setLocationNotify(true);//可选，默认false，设置是否当gps有效时按照1S1次频率输出GPS结果
//        option.setIgnoreKillProcess(false);//可选，默认true，定位SDK内部是一个SERVICE，并放到了独立进程，设置是否在stop的时候杀死这个进程，默认不杀死
//        option.setEnableSimulateGps(false);//可选，默认false，设置是否需要过滤gps仿真结果，默认需要
//        option.setIsNeedLocationDescribe(true);//可选，默认false，设置是否需要位置语义化结果，可以在BDLocation.getLocationDescribe里得到，结果类似于“在北京天安门附近”
//        option.setIsNeedLocationPoiList(true);//可选，默认false，设置是否需要POI结果，可以在BDLocation.getPoiList里得到
//        mLocationClient.setLocOption(option);
//    }
//}
